package com.wannabuy.mobile.dao;

import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.wannabuy.mobile.model.Comentario;
import com.wannabuy.mobile.model.Comprador;
import com.wannabuy.mobile.model.Grupo;
import com.wannabuy.mobile.util.Constantes;
import com.wannabuy.mobile.util.Util;

public class DAOComentario implements RepositorioComentario{

	@Override
	public ArrayList<Comentario> listarComentario(Grupo grupo) {
		HttpClient httpcliente = new DefaultHttpClient();
		ArrayList<NameValuePair> postParameters;
		String respostadoBanco="";
		HttpPost httppost = new HttpPost(
				Constantes.enderecoBanco+"/grupo");

		postParameters = new ArrayList<NameValuePair>();
		GsonBuilder conversor = new GsonBuilder();
		conversor.setDateFormat("dd/MM/yyyy");
		String grupoString = conversor.create().toJson(grupo);
		postParameters.add(new BasicNameValuePair("grupo", grupoString));
		postParameters.add(new BasicNameValuePair("acao", "listarcomentario"));
		try {
			httppost.setEntity(new UrlEncodedFormEntity(postParameters));
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		
		HttpResponse resposta;

		try {
			resposta = httpcliente.execute(httppost);

			HttpEntity entidade = resposta.getEntity();

			InputStream dados;

			if (entidade != null) {
				dados = entidade.getContent();
				respostadoBanco = Util.getStringFromInputStream(dados);
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		
		//convertemos o objeto recebido em um comprador para o retorno
		
		TypeToken<List<Comentario>> listaTypeToken = new TypeToken<List<Comentario>>(){}; 
		ArrayList<Comentario> listaComentario = conversor.create().fromJson(respostadoBanco, listaTypeToken.getType());	
		return listaComentario;
	}

	@Override
	public ArrayList<Comentario> postarComentario(Grupo grupo, Comprador comp,
			Comentario comen) {
		return null;
	}
	
	

}
